When updating hardware architectures of computer systems such as game consoles to implement faster, more feature rich hardware, developers are faced with the issue of backwards compatibility to the legacy computer system for application programs or games developed for the legacy computer system platform. In particular, it is commercially desirable that the updated hardware architecture support application programs or games developed for the legacy hardware architecture. However, if the updated hardware architecture differs substantially, or radically, from that of the legacy hardware architecture, architectural differences between the two systems may make it very difficult, or even impossible, for legacy application programs or games to operate on the new hardware architecture without substantial hardware modification and/or software patches. Since customers generally expect such backwards compatibility, a solution to these problems is critical to the success of the updated hardware architecture.
Recent advances in PC architecture and software emulation have provided hardware architectures for computers, even game consoles, that are powerful enough to enable the emulation of legacy application programs or games in software rather than hardware. Such software emulators translate the title instructions for the application program or game on the fly into device instructions understandable by the new hardware architecture. This software emulation approach is particularly useful for backwards compatibility for computer game consoles since the developer of the game console maintains control over both the hardware and software platforms and is quite familiar with the legacy games.
However, to enable emulation of the host hardware, computer game systems, such as Xbox, pose a particular problem. Unlike an operating system (OS) of a personal computer (PC), the operating system of a computer game system is generally not stored entirely within the console of the computer game system itself. Instead, many of the drivers and middleware layers are shipped on each and every game disc and statically linked in to ensure perfect compatibility between the game and the computer game system software. Unfortunately, this means that when the computer game platform for a legacy computer game system is virtualized using software emulation, the legacy games will continue to attempt to communicate with non-existent legacy computer game system hardware. For example, in the legacy Xbox computer game system, drivers from the game discs communicate with hardware devices by writing to memory-mapped device I/O (MMIO) addresses. However, once the legacy Xbox computer game system is virtualized using software emulation, these MMIO addresses are meaningless.
Accordingly, a technique is needed to enable the legacy computer games drivers to communicate with the hardware of the new host game system even when the legacy computer game system is virtualized using software emulation. The present invention addresses this need in the art.